package org.jeecg.modules.wechat.result.xcx;


import lombok.Builder;
import lombok.Data;

import java.util.List;
import java.util.Map;

/**
 * @author
 * @date 2018/11/7
 * 为授权的小程序帐号上传小程序代码 第三方自定义的配置
 */
@Data
@Builder
public class ApiCodeCommitExtParameter {

    /**
     * 配置 ext.json 是否生效.
     * 必填：是
     */
    private Boolean extEnable;
    /**
     * 配置 extAppid.
     * 必填：是
     */
    private String extAppid;

    /**
     * 是否直接提交到待审核列表.
     * 必填：否
     */
    private Boolean directCommit;

    /**
     * 开发自定义的数据字段.
     * 必填：否
     */
    private Map<String, Object> ext;

    /**
     * 单独设置每个页面的 json.
     * 必填：否
     * key: page 名称，如 pages/logs/logs
     * value: page 配置
     */
    //private Map<String, Page> extPages;

    /**
     * 设置页面路径（同 app.json 相同的字段，填写会覆盖 app.json）.
     * 必填：否
     */
    //private List<String> pages;

    /**
     * 设置默认页面的窗口表现（同 app.json 相同的字段，填写会覆盖 app.json）
     * 必填：否
     */
    //private Window window;

    /**
     * 设置各种网络请求的超时时间（同 app.json 相同的字段，填写会覆盖 app.json）
     * 必填：否
     */
    //private NetworkTimeout networkTimeout;

    /**
     * 设置是否开启 debug 模式（同 app.json 相同的字段，填写会覆盖 app.json）
     * 必填：否
     */
    //private Boolean debug;

    /**
     * 底部 tab 栏的表现.
     * 必填：否
     */
    //private TabBar tabBar;

    @Data
    @Builder
    public static class Page{
        private String navigationBarBackgroundColor;
        private String navigationBarTextStyle;
        private String navigationBarTitleText;
        private String backgroundColor;
        private String backgroundTextStyle;
        private Boolean enablePullDownRefresh;
        private Integer onReachBottomDistance;
        private Boolean disableScroll;

    }

    @Data
    @Builder
    public static class Window{
        /**
         * 导航栏背景颜色，如"#000000" HexColor.
         * 默认：#000000
         */
        private String navigationBarBackgroundColor;
        /**
         * 导航栏标题颜色，仅支持 black/white.
         * 默认：white
         */
        private String navigationBarTextStyle;
        /**
         * 导航栏标题文字内容.
         */
        private String navigationBarTitleText;
        /**
         * 窗口的背景色 HexColor.
         * 默认：#ffffff
         */
        //private String navigationStyle;
        /**
         * 窗口的背景色 HexColor.
         * 默认：#ffffff
         */
        //private String backgroundColor;
        /**
         * 下拉背景字体、loading 图的样式，仅支持 dark/light.
         * 默认：dark
         */
        private String backgroundTextStyle;

        //private String backgroundColorTop;

        //private String backgroundColorBottom;
        /**
         * 是否开启下拉刷新，详见页面相关事件处理函数.
         * 默认：false
         */
        //private Boolean enablePullDownRefresh;
        /**
         * 页面上拉触底事件触发时距页面底部距离，单位为px.
         * 默认：50
         */
        //private Integer onReachBottomDistance;
        /**
         * 设置为 true 则页面整体不能上下滚动；只在 page.json 中有效，无法在 app.json 中设置该项.
         * 默认：false
         */
        //private Boolean disableScroll;
    }

    /**
     * 各种网络请求的超时时间.
     */
    @Data
    @Builder
    public static class NetworkTimeout{
        /**
         * wx.request的超时时间，单位毫秒，默认为：60000.
         * 必填：否
         */
        private Integer request;
        /**
         * wx.connectSocket的超时时间，单位毫秒，默认为：60000.
         * 必填：否
         */
        private Integer connectSocket;
        /**
         * wx.uploadFile的超时时间，单位毫秒，默认为：60000.
         * 必填：否
         */
        private Integer uploadFile;
        /**
         * wx.downloadFile的超时时间，单位毫秒，默认为：60000.
         * 必填：否
         */
        private Integer downloadFile;
    }

    @Data
    @Builder
    public static class TabBar{
        /**
         * HexColor, tab 上的文字默认颜色.
         */
        private String color;

        /**
         * HexColor, tab 上的文字选中时的颜色.
         */
        private String selectedColor;

        /**
         * HexColor, tab 的背景色.
         */
        private String backgroundColor;
        /**
         * tabbar 上边框的颜色，仅支持 black/white.
         */
        private String borderStyle;

        /**
         * tab 的列表，最少2个、最多5个 tab.
         */
        private List<Tab> list;
        /**
         * 可选值 bottom、top.
         */
        private String position;

        @Data
        @Builder
        public static class Tab{
            /**
             * 页面路径，必须在 pages 中先定义.
             */
            private String pagePath;

            /**
             * tab 上按钮文字.
             */
            private String text;
            /**
             * 图片路径，icon 大小限制为40kb，建议尺寸为 81px * 81px，当 postion 为 top 时，此参数无效，不支持网络图片.
             */
            private String iconPath;
            /**
             * 选中时的图片路径，icon 大小限制为40kb，建议尺寸为 81px * 81px ，当 postion 为 top 时，此参数无效.
             */
            private String selectedIconPath;
        }
    }


}

